Apache Flink-এ Time Window এবং Count Window হলো দুটি সাধারণ উইন্ডোিং কৌশল যা স্ট্রিম ডেটা প্রসেসিংয়ে ব্যবহৃত হয়। উইন্ডোগুলি ইনকামিং ডেটাকে নির্দিষ্ট সময় বা ইভেন্টের সংখ্যার ভিত্তিতে ভাগ করে এবং এইভাবে ডেটা প্রসেসিং আরও নিয়ন্ত্রিত এবং পরিচালনাযোগ্য হয়। Flink স্ট্রিম প্রসেসিংয়ের ক্ষেত্রে, উইন্ডো অপারেশন ব্যবহার করে ডেটাকে গ্রুপ করে অ্যাগ্রিগেশন বা অন্য কোনও ট্রান্সফরমেশন করা সহজ হয়।
Time Window হলো নির্দিষ্ট সময়কাল ভিত্তিক উইন্ডো যা ইনপুট স্ট্রিম ডেটাকে সময়ের একটি নির্দিষ্ট পরিসরে ভাগ করে। Flink-এ টাইম উইন্ডো সাধারণত দুটি প্রকারের হতে পারে:
DataStream<Tuple2<String, Integer>> stream = ...;
// ৫ সেকেন্ডের টাম্বলিং উইন্ডো
DataStream<Tuple2<String, Integer>> result = stream
.keyBy(value -> value.f0) // keyBy ব্যবহার করে স্ট্রিমকে কী ভিত্তিক ভাগ করা
.window(TumblingProcessingTimeWindows.of(Time.seconds(5))) // ৫ সেকেন্ডের উইন্ডো
.sum(1); // প্রতিটি উইন্ডোতে দ্বিতীয় ফিল্ডের মানের যোগফল
বর্ণনা: এখানে, স্ট্রিমটি ৫ সেকেন্ডের টাম্বলিং উইন্ডোতে ভাগ করা হয়েছে এবং প্রতিটি উইন্ডোতে একটি নির্দিষ্ট কী অনুযায়ী দ্বিতীয় ফিল্ডের মানগুলো যোগ করা হয়েছে।
DataStream<Tuple2<String, Integer>> stream = ...;
// ১০ সেকেন্ডের স্লাইডিং উইন্ডো যা ৫ সেকেন্ডে স্লাইড করে
DataStream<Tuple2<String, Integer>> result = stream
.keyBy(value -> value.f0)
.window(SlidingProcessingTimeWindows.of(Time.seconds(10), Time.seconds(5)))
.sum(1);
বর্ণনা: এখানে, উইন্ডোটি ১০ সেকেন্ডের জন্য খোলা হয় এবং প্রতি ৫ সেকেন্ডে স্লাইড করে। একই ডেটা একাধিক উইন্ডোতে থাকতে পারে যদি তারা ওভারল্যাপ করে।
Count Window হলো একটি উইন্ডো যা ডেটার নির্দিষ্ট সংখ্যার (ইভেন্টের) উপর ভিত্তি করে উইন্ডো তৈরি করে। এটি ডেটা স্ট্রিমকে নির্দিষ্ট ইভেন্ট সংখ্যা পরপর ভাগ করে এবং প্রতিটি উইন্ডোতে নির্দিষ্ট ইভেন্ট সংখ্যা রাখে। Count Window দুই প্রকার হতে পারে:
DataStream<Tuple2<String, Integer>> stream = ...;
// প্রতিটি উইন্ডোতে ১০টি ইভেন্ট
DataStream<Tuple2<String, Integer>> result = stream
.keyBy(value -> value.f0)
.countWindow(10)
.sum(1);
বর্ণনা: এখানে, প্রতিটি উইন্ডোতে ১০টি ইভেন্ট রাখা হয়েছে এবং তারপর একটি অ্যাগ্রিগেশন অপারেশন (যোগফল) প্রয়োগ করা হয়েছে।
DataStream<Tuple2<String, Integer>> stream = ...;
// ১৫টি ইভেন্টের উইন্ডো, যা প্রতি ৫টি ইভেন্ট পরে স্লাইড করে
DataStream<Tuple2<String, Integer>> result = stream
.keyBy(value -> value.f0)
.countWindow(15, 5)
.sum(1);
বর্ণনা: এখানে, উইন্ডোটি ১৫টি ইভেন্ট ধারণ করে এবং প্রতি ৫টি ইভেন্ট পর নতুন উইন্ডো খোলে। এই কারণে একাধিক উইন্ডো ওভারল্যাপ হতে পারে।
Apache Flink-এ Time Window এবং Count Window ব্যবহার করে স্ট্রিম ডেটা প্রসেসিংয়ের সময় ডেটাকে নির্দিষ্ট সময়কাল বা ইভেন্ট সংখ্যা অনুযায়ী ভাগ করে প্রক্রিয়াকরণ করা সম্ভব। টাইম উইন্ডো সাধারণত রিয়েল-টাইম ডেটা এনালাইটিক্স এবং টাইম-বেসড অ্যাগ্রিগেশন করার জন্য উপযুক্ত, যেখানে কাউন্ট উইন্ডো ইভেন্ট-ভিত্তিক প্রসেসিং এবং ব্যাচ অপারেশন করতে সুবিধাজনক।
আরও দেখুন...